Field of the Invention
This invention relates in general to the field of microelectronics, and more particularly to apparatus and methods for restoring compressed cache repair data following a multi-core power gating event.
Description of the Related Art
Integrated device technologies have exponentially advanced over the past 40 years. More specifically directed to the microprocessor fields, starting with 4-bit, single instruction, 10-micrometer devices, the advances in semiconductor fabrication technologies have enabled designers to provide increasingly more complex devices in terms of architecture and density. In the 80's and 90's, so-called pipeline microprocessors and superscalar microprocessors were developed comprising millions of transistors on a single die. And now 20 years later, 64-bit, 32-nanometer devices are being produced that have billions of transistors on a single die, and which comprise multiple microprocessor cores for the processing of data.
One requirement that has persisted since these early microprocessors were produced is the need to initialize these devices with configuration data when they are powered up or when they are reset. For example, many architectures enable devices to be configured to execute at one of many selectable frequencies and/or voltages. Other architectures require that each device have a serial number and other information that can be read via execution of an instruction. Yet other devices require initialization data for internal registers and control circuits. Still other microprocessors, particularly that with on-board cache memories, utilize repair data to implement redundant circuits within these memories to correct for fabrication errors.
As one skilled in the art will appreciate, designers have traditionally employed semiconductor fuse arrays on-die to store and provide initial configuration and repair data. These fuse arrays are generally programmed by blowing selected fuses therein after a part has been fabricated, and the arrays contain thousands of bits of information which are read by a corresponding device upon power-up/reset to initialize and configure the device for operation.
As device complexity has increased over the past years, the amount of configuration/repair data that is required for a typical device has proportionately increased. Yet, as one skilled in the art will appreciate, though transistor size shrinks in proportion to the semiconductor fabrication process employed, semiconductor fuse size increases due to the unique requirements for programming fuses on die. This phenomenon, in and of itself, is a problem for designers, who are prevalently constrained by real estate and power considerations. In other words, there is just not enough real estate on a given die to fabricate a huge fuse array.
In addition, the ability to fabricate multiple device cores on a single die has geometrically exacerbated the problem, because configuration requirements for each of the cores result in a requirement for a number of fuses on die, in a single array or distinct arrays, that is proportional to the number of cores disposed thereon.
Furthermore, as one skilled in the art will appreciate, multiple-core devices utilize complex power-saving modes of operation that result in one or more of the cores being powered down in a so-called power gating event (or, “sleep mode”) when not in use. Consequently, when a core is powered up following a power gating event, the same requirement for initialization, configuration, and repair persists, except that initialization speed requirements are much more stringent.
Therefore, what is needed is apparatus and methods that enable configuration/repair data to be stored and provided to a multi-core device that require significantly less real estate and power on a single die than that which has heretofore been provided.
In addition, what is needed is a fuse array mechanism that can store and provide significantly more configuration/repair data than current techniques while requiring the same or less real estate on a multi-core die.
Furthermore, what is needed is a technique that facilitates prompt initialization, configuration, and repair of a multi-core device following a power gating event.